<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>磁盘配额 | 失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		<article>
	
		<h1>磁盘配额</h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Linux/">Linux</a>
			</span>
		
	</div>

	

	
		<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;磁盘配合其实就是给每个用户分配一定的磁盘额度，只允许他使用这个额度范围内的磁盘空间。在linux系统中，是多用户多任务的环境，所以会有很多人共用一个磁盘的情况。针对每个用户去限定一定量的磁盘空间是有必要的，这样才显得公平。随着硬件成本的降低，服务器上的磁盘资源似乎不再刻意的去限制了，所以磁盘配额也就可有可无了，但是也需要了解一下这部分内容，用到时必须会操作。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;在linux中，用来管理磁盘配额的东西就是quota了。如果linux上没有quota，则需要安装这个软件包 quota-3.13-5.el5.RPM （其实版本是多少无所谓了，关键是这个软件包）。quota在实际应用中是针对整个分区进行限制的。比如，如果我们限制了/dev/sdb1这个分区，而/dev/sdb1 是挂载在/home 目录下的，那么/home 所有目录都会受到限制。</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;quota 这个模块主要分为quota 、quotacheck 、quotaoff 、quotaon 、quotastats 、edquota 、setquota 、warnquota 、repquota这几个命令，下面就分别介绍这些命令。</p>
<h2 id="命令-quota"><a href="#命令-quota" class="headerlink" title="命令 : quota"></a>命令 : quota</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“quota” 用来显示某个组或者某个使用者的限额。</p>
<h3 id="语法："><a href="#语法：" class="headerlink" title="语法："></a>语法：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">quota [-guvs] [user,group]</div></pre></td></tr></table></figure>
<h3 id="基本参数"><a href="#基本参数" class="headerlink" title="基本参数"></a>基本参数</h3><ul>
<li>-g 显示某个组的限额</li>
<li>-u 显示某个用户的限额</li>
<li>-v 显示的意思</li>
<li>-s 选择inod或硬盘空间来显示</li>
</ul>
<h2 id="命令-quotacheck"><a href="#命令-quotacheck" class="headerlink" title="命令 : quotacheck"></a>命令 : quotacheck</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“quotacheck” 用来扫描某一个磁盘的quota空间。</p>
<h3 id="语法：-1"><a href="#语法：-1" class="headerlink" title="语法："></a>语法：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">quotacheck [-auvg] /path</div></pre></td></tr></table></figure>
<h3 id="基本参数-1"><a href="#基本参数-1" class="headerlink" title="基本参数"></a>基本参数</h3><ul>
<li>-a 扫描所有已经mount的具有quota支持的磁盘</li>
<li>-u 扫描某个使用者的文件以及目录</li>
<li>-g 扫描某个组的文件以及目录</li>
<li>-v 显示扫描过程</li>
<li>-m 强制进行扫描</li>
</ul>
<h2 id="命令-edquota"><a href="#命令-edquota" class="headerlink" title="命令 : edquota"></a>命令 : edquota</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“edquota” 用来编辑某个用户或者组的quota值。</p>
<h3 id="语法：-2"><a href="#语法：-2" class="headerlink" title="语法："></a>语法：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">edquota [-u user] [-g group] [-t]</div></pre></td></tr></table></figure>
<h3 id="基本参数-2"><a href="#基本参数-2" class="headerlink" title="基本参数"></a>基本参数</h3><ul>
<li>-u 编辑某个用户的quota</li>
<li>-g 编辑某个组的quota</li>
<li>-t 编辑宽限时间</li>
<li>-p 拷贝某个用户或组的quota到另一个用户或组</li>
</ul>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当运行 <code>edquota -u user</code> 时，系统会打开一个文件，你会看到这个文件中有7列，它们分别代表的含义是：</p>
<ul>
<li>“Filesystem” 磁盘分区，如/dev/sdb5</li>
<li>“blocks” 当前用户在当前的Filesystem中所占用的磁盘容量，单位是Kb。该值请不要修改。</li>
<li>“soft/hard” 当前用户在该Filesystem内的quota值，soft指的是最低限额，可以超过这个值，但必须要在宽限时间内将磁盘容量降低到这个值以下。hard指的是最高限额，即不能超过这个值。当用户的磁盘使用量高于soft值时，系统会警告用户，提示其要在宽限时间内把使用空间降低到soft值之下。</li>
<li>“inodes” 目前使用掉的inode的状态，不用修改。</li>
</ul>
<h2 id="命令-quotaon"><a href="#命令-quotaon" class="headerlink" title="命令 : quotaon"></a>命令 : quotaon</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“quotaon” 用来启动quota，在编辑好quota后，需要启动才能是quota生效</p>
<h3 id="语法：-3"><a href="#语法：-3" class="headerlink" title="语法："></a>语法：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">quotaon [-a] [-uvg directory]</div></pre></td></tr></table></figure>
<h3 id="基本参数-3"><a href="#基本参数-3" class="headerlink" title="基本参数"></a>基本参数</h3><ul>
<li>-a 全部设定的quota启动</li>
<li>-u 启动某个用户的quota</li>
<li>-g 启动某个组的quota</li>
<li>-s 显示相关信息</li>
</ul>
<h2 id="命令-quotaoff"><a href="#命令-quotaoff" class="headerlink" title="命令 : quotaoff"></a>命令 : quotaoff</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;“quotaoff” 用来关闭quota, 该命令常用只有一种情况 quotaoff -a 关闭全部的quota.</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;以上讲了很多quota的相关命令，那么接下来阿铭教你如何在实践应用中去做这个磁盘配额。整个执行过程如下：</p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;首先先确认一下，/home目录是不是单独的挂载在一个分区下，用df 查看即可。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">文件系统                 1K-块      已用      可用 已用% 挂载点</div><div class="line">/dev/sda3             14347632   1899376  11719424  14% /</div><div class="line">tmpfs                   163308         0    163308   0% /dev/shm</div><div class="line">/dev/sda1                99150     26808     67222  29% /boot</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;上例linux系统中，/home并没有单独占用一个分区。所以需要把/home目录挂载在一个单独的分区下，因为quota是针对分区来限额的。下面把 /dev/sdb5 挂载到/home 目录下， 编辑 /etc/fstab 把刚才添加的那行修改为：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">UUID=c61117ca-9176-4d0b-be4d-1b0f434359a7              /home                 ext4    defaults        0 0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存 /etc/fstab 后，运行 mount -a 命令挂载全部的分区。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># mount -a</span></div><div class="line">[root@localhost ~]<span class="comment"># df -h</span></div><div class="line">文件系统              容量  已用  可用 已用%% 挂载点</div><div class="line">/dev/sda3              14G  1.9G   12G  14% /</div><div class="line">tmpfs                 160M     0  160M   0% /dev/shm</div><div class="line">/dev/sda1              97M   27M   66M  29% /boot</div><div class="line">/dev/sdb5             989M   18M  921M   2% /home</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;此时的 /home 为一个单独分区了。</p>
<ol>
<li>建立测试账户<br>首先建立一个test用户，则同时建立了一个test组。其中uid和gid都为511 ，然后又建立一个test1账号，使其加入test组，查看/etc/passwd文件发现test和test1用户的gid都为511.</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># useradd test</span></div><div class="line">[root@localhost ~]<span class="comment"># grep test /etc/passwd</span></div><div class="line"><span class="built_in">test</span>:x:511:511::/home/<span class="built_in">test</span>:/bin/bash</div><div class="line">[root@localhost ~]<span class="comment"># useradd -g 511 test1</span></div><div class="line">[root@localhost ~]<span class="comment"># grep test1 /etc/passwd</span></div><div class="line">test1:x:512:511::/home/test1:/bin/bash</div></pre></td></tr></table></figure>
<ol>
<li>打开磁盘的quota功能<br>默认linux并没有对任何分区做quota的支持，所以需要我们手动打开磁盘的quota功能，你是否记得，在前面内容中分析/etc/fstab文件的第四列时讲过这个quota选项（usrquota, grpquota），没错，要想打开这个磁盘的quota支持就是需要修改这个第四列的。用vi编辑/etc/fstab 编辑刚才加的那一行，如下:</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">UUID=c61117ca-9176-4d0b-be4d-1b0f434359a7     /home        ext4    defaults,usrquota,grpquota     0 0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;保存 /etc/fstab 后，重新挂载/home分区。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># umount /home/</span></div><div class="line">[root@localhost ~]<span class="comment"># mount -a</span></div><div class="line">[root@localhost ~]<span class="comment"># mount</span></div><div class="line">/dev/sda3 on / <span class="built_in">type</span> ext4 (rw)</div><div class="line">proc on /proc <span class="built_in">type</span> proc (rw)</div><div class="line">sysfs on /sys <span class="built_in">type</span> sysfs (rw)</div><div class="line">devpts on /dev/pts <span class="built_in">type</span> devpts (rw,gid=5,mode=620)</div><div class="line">tmpfs on /dev/shm <span class="built_in">type</span> tmpfs (rw)</div><div class="line">/dev/sda1 on /boot <span class="built_in">type</span> ext4 (rw)</div><div class="line">none on /proc/sys/fs/binfmt_misc <span class="built_in">type</span> binfmt_misc (rw)</div><div class="line">/dev/sdb5 on /home <span class="built_in">type</span> ext4 (rw,usrquota,grpquota)</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;使用 mount 命令可以查看到 /home 分区已经加上了 “usrquota,grpquota” 两个配额相关的参数。</p>
<ol>
<li>扫描磁盘的使用者使用状况，并产生重要的aquota.group与aquota.user<br>这一步就需要用到quotacheck了，aquota.group与aqouta.user分别是组以及用户磁盘配额需要的配置文件。如果没有这两个文件，则磁盘配额是不会生效的。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># quotacheck -augv</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;可能会有一些错误信息，不要管它。看一看/home分区下是否多了两个文件(aquota.group, aquota.user)</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># ll /home/</span></div><div class="line">总用量 44</div><div class="line">-rw------- 1 root  root  7168 5月  12 02:07 aquota.group</div><div class="line">-rw------- 1 root  root  8192 5月  12 02:07 aquota.user</div><div class="line">drwxr-xr-x 2 root  root  4096 5月  12 00:11 dir1</div><div class="line">drwx------ 2 root  root 16384 5月  11 23:18 lost+found</div><div class="line">drwx------ 3 <span class="built_in">test</span>  <span class="built_in">test</span>  4096 5月  12 01:59 <span class="built_in">test</span></div><div class="line">drwx------ 3 test1 <span class="built_in">test</span>  4096 5月  12 02:00 test1</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;如果有了，则可以进入下一步了。</p>
<ol>
<li>启动quota配额</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># quotaon -av</span></div><div class="line">/dev/sdb5 [/home]: group quotas turned on</div><div class="line">/dev/sdb5 [/home]: user quotas turned on</div></pre></td></tr></table></figure>
<ol>
<li>编辑用户磁盘配额<br>先来设定test账户的配额，然后直接把test的配额拷贝给test1即可。这里就需要用到edquota了。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># edquota -u test</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;将下面内容</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb5                        20          0          0          5        0        0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;修改为：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb5                        20          20000          30000          5        0        0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;其中单位是Kb，所以soft 值大约为20Mb，hard值为30Mb，保存这个文件，保存的方式跟vi一个文件的方式一样的。下面将test的配额复制给test1.</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># edquota -p test test1</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下面继续设定宽限时间：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># edquota -t</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;将7days 改为 1days</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb5                     1days                  1days</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;下面查看一下test以及test1用户的配额吧。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># quota -uv test test1</span></div><div class="line">Disk quotas <span class="keyword">for</span> user <span class="built_in">test</span> (uid 511):</div><div class="line">     Filesystem  blocks   quota   <span class="built_in">limit</span>   grace   files   quota   <span class="built_in">limit</span>   grace</div><div class="line">      /dev/sdb5      20   20000   30000               5       0       0</div><div class="line">Disk quotas <span class="keyword">for</span> user test1 (uid 512):</div><div class="line">     Filesystem  blocks   quota   <span class="built_in">limit</span>   grace   files   quota   <span class="built_in">limit</span>   grace</div><div class="line">      /dev/sdb5      20   20000   30000               5       0       0</div></pre></td></tr></table></figure>
<ol>
<li>编辑组磁盘配额</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># edquota -g test</span></div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;修改为：</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">/dev/sdb5                        40          40000          50000         10        0        0</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;设定组test的soft配额值为40M，hard值为50M。下面查看组test的配额。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># quota -gv test</span></div><div class="line">Disk quotas <span class="keyword">for</span> group <span class="built_in">test</span> (gid 511):</div><div class="line">     Filesystem  blocks   quota   <span class="built_in">limit</span>   grace   files   quota   <span class="built_in">limit</span>   grace</div><div class="line">      /dev/sdb5      40   40000   50000              10       0       0</div></pre></td></tr></table></figure>
<ol>
<li>设定开机启动<br>前面已经讲到启动磁盘配额的命令是 quotaon -aug 所以要想开机启动，只需将这条命令加入到 /etc/rc.d/rc.local文件即可。</li>
</ol>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[root@localhost ~]<span class="comment"># echo "quotaon -aug" &gt;&gt; /etc/rc.d/rc.local</span></div></pre></td></tr></table></figure>
	

	
		<span class="different-posts"><a href="/2017/10/12/1. Linux 基础/27.磁盘配额/" onclick="window.history.go(-1); return false;">⬅️ Go back </a></span>

	

</article>

	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
